package mybatis.interfaces;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * 使用 and 连接的 like '%xxx' 操作
 *
 * @author CKC
 */
public interface ISearchLeftQueryCondition extends Serializable {

    /**
     * 左模糊查询,仅支持不同字段and连接,不支持id的模糊查询，eg: searchL[name]=name1 表示 name like '%name1'
     * 备注：为了与SwaggerUI结合，产生Swagger文档
     *
     * @return null
     */
    @ApiModelProperty(name = "searchL[{field}]", value = "左模糊查询,仅支持不同字段and连接,不支持id的模糊查询，eg: searchL[name]=name1 表示 name like '%name1' ")
    @JsonIgnore
    default String getSearchLSwaggerView() {
        return null;
    }

    /**
     * getSearchL
     *
     * @return map
     */
    Map<String, String> getSearchL();

    /**
     * setSearchL
     *
     * @param searchL map
     */
    void setSearchL(Map<String, String> searchL);

    /**
     * addSearchL
     *
     * @param field key
     * @param value value
     */
    default void addSearchL(String field, String value) {
        if (getSearchL() == null) {
            setSearchL(new HashMap<>(8));
        }
        getSearchL().put(field, value);
    }

    /**
     * setSearchL(null)
     */
    default void clearSearchL() {
        setSearchL(null);
    }

    /**
     * isEmptySearchL
     *
     * @return boolean
     */
    @ApiModelProperty(hidden = true)
    @JsonIgnore
    default boolean isEmptySearchL() {
        return getSearchL() == null || getSearchL().isEmpty();
    }
}
